package top.imyzt.common.utils;

import java.util.Map;

import com.google.common.collect.Maps;

/**
 * 格式化返回客户端数据(json)
 * @author imyzt
 *
 */
public class ReturnFormat {
	
	private static Map<String,String> messageMap = Maps.newHashMap();
	
	/*
	 * 初始化状态码与文字说明
	 * 
	 * 编码规则
	 * 0---0---0---0
	 * 第一位为预留字段
	 * 第二位为状态码类型
	 	 * 0:系统异常			
		 * 1:用户异常
		 * 2:数据库异常
		 * 3:...
	 * 第三位和第四位为状态码类型排序
	 * 
	 * 
	 * eg:
	 * 1000
	 * 		系统异常第一个异常类型[服务器]运行时异常
	 * 1100
	 * 		用户操作第一个异常类型[用户]用户注册失败
	 * 1200
	 * 		参数异常第一个异常类型[参数]缺少必要参数
	 */
	static {
		messageMap.put("0", "");

		messageMap.put("200", "OK");
		messageMap.put("400", "Bad Request!");
		messageMap.put("401", "NotAuthorization");
		messageMap.put("405", "Method Not Allowed");
		messageMap.put("406", "Not Acceptable");
		messageMap.put("500", "Internal Server Error");

		messageMap.put("1000", "[服务器]运行时异常");
		messageMap.put("1001", "[服务器]空值异常");
		messageMap.put("1002", "[服务器]数据类型转换异常");
		messageMap.put("1003", "[服务器]IO异常");
		messageMap.put("1004", "[服务器]未知方法异常");
		messageMap.put("1005", "[服务器]数组越界异常");
		messageMap.put("1006", "[服务器]网络异常");

		messageMap.put("1100", "为找到用户");
		messageMap.put("1101", "用户注册成功");
		messageMap.put("1102", "用户注册失败");
		messageMap.put("1103", "用户未注册");
		messageMap.put("1104", "用户已注册");
		messageMap.put("1105", "用户名或密码错误");
		messageMap.put("1106", "用户帐号冻结");
		messageMap.put("1107", "用户信息编辑失败");
		messageMap.put("1108", "用户信息失效，请重新获取");
		messageMap.put("1109", "无效的Token");
		messageMap.put("1110", "无操作权限");
		messageMap.put("1111", "请重新登录");
		messageMap.put("1112", "找到该用户");
		messageMap.put("1113", "用户信息修改成功");
		messageMap.put("1114", "用户信息修改失败,请重试");
		messageMap.put("1115", "成功删除用户");
		messageMap.put("1116", "删除用户失败,请重试");

		
		messageMap.put("1200", "缺少必要参数");
		messageMap.put("1201", "文件不能超过5M");
		messageMap.put("1202", "请选择需要上传的文件");
		
		
		messageMap.put("2022", "RSA解密失败,密文数据已损坏");
	}
	
	public static String retParam(int status,Object data) {
		OutputJson json = new OutputJson(status, messageMap.get(String.valueOf(status)), data);
		return json.toString();
	}
}
